home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / docs / ippon / xsptest2 / xsptest2.c < prev    next >
C/C++ Source or Header  |  2000-07-07  |  2KB  |  84 lines

  1. /* xsptest2.c */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6. #include <sys/iocs.h>
  7. #include "XSP2lib.H"
  8.  
  9. #define PCG_MAX    32        /* パターンデータの個数 */
  10. #define FRM_MAX    128        /* フレームデータの個数 */
  11. #define REF_MAX    128        /* リファレンスデータの個数 */
  12.  
  13. static char pcg_alt[PCG_MAX + 1];    /* PCG配置管理テーブル */
  14. static char pcg_dat[PCG_MAX * 128];    /* PCGデータファイル読み込みバッファ */
  15. static XOBJ_REF_DAT ref_dat[REF_MAX];    /* リファレンスデータ */
  16. static XOBJ_FRM_DAT frm_dat[FRM_MAX];    /* フレームデータ */
  17.  
  18. static unsigned short pal_dat[16][15];    /* パレットデータ */
  19.  
  20.  
  21. int main (int argc, char *argv[])
  22. {
  23.     FILE *fp;
  24.     int i, j, r;
  25.  
  26.     _iocs_crtmod (10);    /* 256x256ドット グラフィック画面 256色 2画面 */
  27.     _iocs_sp_init ();    /* スプライトの初期化 */
  28.     _iocs_sp_on ();
  29.  
  30.     /* pcg_dat にパターンデータを読み込む */
  31.     fp = fopen ("PLAYER.XSP", "rb");
  32.     fread (pcg_dat, sizeof (char), PCG_MAX * 128, fp);
  33.     fclose (fp);
  34.  
  35.     /* frm_dat にフレームデータを読み込む */
  36.     fp = fopen ("PLAYER.FRM", "rb");
  37.     fread (frm_dat, sizeof (XOBJ_FRM_DAT), FRM_MAX, fp);
  38.     fclose (fp);
  39.  
  40.     /* ref_dat にリファレンスデータを読み込む */
  41.     fp = fopen ("PLAYER.REF", "rb");
  42.     r = fread (ref_dat, sizeof (XOBJ_REF_DAT), REF_MAX, fp);
  43.     fclose (fp);
  44.  
  45.     /* REF_DAT[].ptr 補正 */
  46.     for (i = 0; i < r; i++)
  47.         (int) ref_dat[i].ptr += (int) frm_dat;
  48.  
  49.  
  50.     /* pal_buf に一旦パレットデータを読み込む */
  51.     fp = fopen ("PLAYER.PAL", "rb");
  52.     fread (pal_dat, sizeof (unsigned short), 16 * 15, fp);
  53.     fclose (fp);
  54.     /* パレットデータを定義 */
  55.     /* (1パレットブロック=16色) × (15ブロックぶん) 定義する */
  56.     {
  57.         unsigned short *p = (unsigned short *) pal_dat;
  58.         for (i = 1; i < 15; i++)
  59.             for (j = 0; j < 16; j++)
  60.                 _iocs_spalet (0x80000000 | j, i, *p++);
  61.     }
  62.  
  63.     xsp_on ();
  64.     xsp_mode (3);
  65.     /* パターンデータを定義 */
  66.     xsp_pcgdat_set (pcg_dat, pcg_alt, sizeof (pcg_alt));
  67.     xsp_objdat_set (ref_dat);
  68.  
  69.     /* 座標, 複合スプライトNo., パレット|優先順位 */
  70.     xobj_set (80 + 32 * 0, 144, 0, 0x073f);
  71.     xobj_set (80 + 32 * 1, 144, 1, 0x073f);
  72.     xobj_set (80 + 32 * 2, 144, 2, 0x073f);
  73.     xobj_set (80 + 32 * 3, 144, 3, 0x073f);
  74.     xobj_set (80 + 32 * 4, 144, 4, 0x073f);
  75.     xsp_out ();        /* 表示 */
  76.  
  77.     printf ("何かキーを押して下さい\n");
  78.     getche ();
  79.     xsp_off ();
  80.  
  81.     _iocs_crtmod (16);
  82.     return (0);
  83. }
  84.